package com.huellas.negocio;

import java.util.Collection;

import com.huellas.bean.CitaBean;
import com.huellas.bean.EstadoCitaBean;
import com.huellas.bean.PacienteBean;
import com.huellas.bean.UsuarioBean;
import com.huellas.bean.VacunaBean;
import com.huellas.bean.VacunaCitaBean;
import com.huellas.dao.VacunaCitaDAO;
import com.huellas.excepcion.DAOExcepcion;

public class GestionVacunaCita {

	//Metodo para crear una cita de vacuna
	public void insertarVacunaCita(int CoCita, String FeCita, String FeHora, String FlTipoCita, int CoEstadoCita, int CoPaciente, int CoDoctor, int CoVacuna) throws DAOExcepcion{
			
		EstadoCitaBean estadoCitaBean = new EstadoCitaBean();
		estadoCitaBean.setCoEstadoCita(CoEstadoCita);
			
		PacienteBean pacienteBean = new PacienteBean();
		pacienteBean.setCoPaciente(CoPaciente);
		
		UsuarioBean usuarioBean = new UsuarioBean();
		usuarioBean.setCoUsuario(CoDoctor);
			
		CitaBean citaBean = new CitaBean();
		citaBean.setCoCita(CoCita);
		citaBean.setFeCita(FeCita);
		citaBean.setFeHora(FeHora);
		citaBean.setFlTipoCita(FlTipoCita);
		citaBean.setEstadoCitaBean(estadoCitaBean);
		citaBean.setPacienteBean(pacienteBean);
		citaBean.setUsuarioBean(usuarioBean);
			
		VacunaBean vacunaBean = new VacunaBean();
		vacunaBean.setCoVacuna(CoVacuna);
			
		VacunaCitaBean vacunaCitaBean = new VacunaCitaBean();
		vacunaCitaBean.setCitaBean(citaBean);
		vacunaCitaBean.setVacunaBean(vacunaBean);
		
		GestionCita gestionCita = new GestionCita();
		gestionCita.insertarCita(CoCita, FeCita, FeHora, FlTipoCita, CoEstadoCita, CoPaciente, CoDoctor);
				
		VacunaCitaDAO vacunaCitaDAO = new VacunaCitaDAO();
		vacunaCitaDAO.insertarVacunaCita(vacunaCitaBean);
		
	}
	
	//Metodo para obtener el registro de vacuna
	public Collection<VacunaCitaBean> obtenerRegistroVacuna(int CoVacuna, String FeCita, String FeHora, String FlTipoCita, int CoEstadoCita, int CoPaciente, int CoDoctor) throws DAOExcepcion{
		VacunaCitaDAO vacunaCitaDAO = new VacunaCitaDAO();
		return vacunaCitaDAO.obtenerRegistroVacunaCita(CoVacuna, FeCita, FeHora, FlTipoCita, CoEstadoCita, CoPaciente, CoDoctor);
	}
	
	//Metodo que valida el registro de una vacuna existe
	public boolean validarRegistroVacuna(int CoVacuna, String FeCita, String FeHora, String FlTipoCita, int CoEstadoCita, int CoPaciente, int CoDoctor) throws DAOExcepcion{
			
		boolean validar = false;
			
		Collection<VacunaCitaBean> listaVacunaCita = this.obtenerRegistroVacuna(CoVacuna, FeCita, FeHora, FlTipoCita, CoEstadoCita, CoPaciente, CoDoctor);
			
		if(listaVacunaCita.size() == 1){
			for (VacunaCitaBean vacunaCitaBean : listaVacunaCita){
				if (CoVacuna == vacunaCitaBean.getVacunaBean().getCoVacuna() && FeCita.equals(vacunaCitaBean.getCitaBean().getFeCita()) && FeHora.equals(vacunaCitaBean.getCitaBean().getFeHora()) 
					&& FlTipoCita.equals(vacunaCitaBean.getCitaBean().getFlTipoCita()) && CoEstadoCita == vacunaCitaBean.getCitaBean().getEstadoCitaBean().getCoEstadoCita()
					&& CoPaciente == vacunaCitaBean.getCitaBean().getPacienteBean().getCoPaciente() && CoDoctor == vacunaCitaBean.getCitaBean().getUsuarioBean().getCoUsuario()){
						
					validar = false;
				}else{
					validar = true;
				}
			}
		}else{
			validar = true;
		}
			
		return validar;
	}
	
	//Metodo para ver vacunas programadas en calendario
	public Collection<VacunaCitaBean> buscarCitaVacuna(int CoCliente, String NoPaciente, String FeCita) throws DAOExcepcion{
		VacunaCitaDAO vacunaCitaDAO = new VacunaCitaDAO();
		return vacunaCitaDAO.buscarVacunaCita(CoCliente, NoPaciente, FeCita);
	}
}
